<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>列表过滤_computed实现</title>
		<script type="text/javascript" src="../js/vue.js"></script>
	</head>
	<body>
		<!-- 准备好一个容器-->
		<div id="root">
			<input type="text" placeholder="请输入名字" v-model="keyWord">
			<button @click="sortType = 1">年龄升序↓</button>
			<button @click="sortType = 2">年龄降序↓</button>
			<button @click="sortType = 0">原顺序</button>
			<ul>
				<li :key="item.id" v-for="(item,index) in fmtPersons">{{item.name}} -- {{item.age}} -- {{item.sex}}</li吧>
			</ul>
		</div>
	</body>

	<script type="text/javascript">
		Vue.config.productionTip = false

		new Vue({
			el:'#root',
			data:{
				keyWord:'',
				sortType:0, //0原顺序  1升序  2降序 @click="changeSortType"
				persons:[ //原始人员列表
					{id:'001',name:'马冬梅',age:19,sex:'女'},
					{id:'002',name:'周冬雨',age:18,sex:'女'},
					{id:'003',name:'周杰伦',age:21,sex:'男'},
					{id:'004',name:'温兆伦',age:20,sex:'男'}
				],
			},
			computed:{
				fmtPersons(){
					//过滤
					const arr =  this.persons.filter((p)=>{
						return p.name.indexOf(this.keyWord) !== -1
					})
					//能进入判断就证明：需要排序
					if(this.sortType){
						arr.sort((a,b)=>{
							return this.sortType == 1 ? a.age-b.age : b.age-a.age
						})
					}
					return arr
				}
			}
		})
	</script>
</html>